{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Odometry Reconstruction Accuracy Results\n",
    "\n",
    " * **Warning:** quite a bit of copypasta from the 'DepthAnalysis' notebook."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "import matplotlib\n",
    "import matplotlib.pyplot as plt\n",
    "from matplotlib.ticker import AutoMinorLocator\n",
    "import seaborn as sns\n",
    "\n",
    "import os\n",
    "import sys\n",
    "\n",
    "%matplotlib inline\n",
    "\n",
    "from matplotlib import rc\n",
    "\n",
    "# Enables full LaTeX support in the plot text.\n",
    "# Requires a full-fledged LaTeX installation on your system, accessible via PATH.\n",
    "rc('text', usetex=True)\n",
    "\n",
    "plt.rcParams[\"figure.figsize\"] = (16, 5)\n",
    "matplotlib.rcParams.update({'font.size': 20})"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "metadata": {},
   "outputs": [],
   "source": [
    "INNER_GAP = 0.75\n",
    "SEQUENCE_GAP = 1.0\n",
    "\n",
    "sequences = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]\n",
    "metrics = ['input', 'fusion']\n",
    "depths = ['elas', 'dispnet']\n",
    "\n",
    "GROUP_SIZE = len(depths) * len(metrics)\n",
    "\n",
    "\n",
    "def compute_metrics(dataframe, metric):\n",
    "    # Do not count frames with no pixels in them. This would distort the \n",
    "    # dynamic reconstruction metrics due to frames containing no objects.\n",
    "    ok = (dataframe['{}-total-3.00-kitti'.format(metric)] != 0)\n",
    "\n",
    "    err = dataframe['{}-error-3.00-kitti'.format(metric)][ok]\n",
    "    tot = dataframe['{}-total-3.00-kitti'.format(metric)][ok]\n",
    "    mis = dataframe['{}-missing-3.00-kitti'.format(metric)][ok]\n",
    "    cor = dataframe['{}-correct-3.00-kitti'.format(metric)][ok]\n",
    "    mis_sep = dataframe['{}-missing-separate-3.00-kitti'.format(metric)][ok]\n",
    "\n",
    "    acc_perc = cor / (tot - mis)\n",
    "    completeness = 1.0 - (mis_sep / tot)\n",
    "\n",
    "    return acc_perc, completeness\n",
    "\n",
    "\n",
    "def load_logs(fpath_fmt, part):\n",
    "    frames = {}\n",
    "    for sequence_id in sequences:\n",
    "        for depth in depths:\n",
    "            fname = fpath_fmt.format(sequence_id=sequence_id, depth=depth, part=part)\n",
    "            df = pd.read_csv(fname)\n",
    "            frames[(depth, sequence_id)] = df\n",
    "    return frames\n",
    "\n",
    "\n",
    "def load_and_preprocess(fpath_fmt, part, colors):\n",
    "    \"\"\"Loads the data and prepares some positioning and color info.\n",
    "    \n",
    "    Since we're doing a nontrivial plot, which means we need to do a lot of\n",
    "    stuff manually.\n",
    "    \n",
    "    Args:\n",
    "        fpath_fmt: Format string for the CSV paths to load.\n",
    "        part:      Dictates what we are evaluating: dynamic or static parts\n",
    "        colors:    Nested array with plot color info.\n",
    "                   (colors[method][input/fusion] = color_name)\n",
    "    \"\"\"\n",
    "    box_colors = []\n",
    "    box_positions = []\n",
    "    columns = []\n",
    "\n",
    "    box_offset = 0\n",
    "    # Aggregated for all the sequences.\n",
    "    res_acc_agg = {}\n",
    "    res_completeness_agg = {}\n",
    "    res = {}\n",
    "    res_completeness = {}\n",
    "    \n",
    "    data = load_logs(fpath_fmt, part)\n",
    "    \n",
    "    for sequence_id in sequences:\n",
    "        for depth in depths:\n",
    "            df = data[(depth, sequence_id)]\n",
    "            \n",
    "            for metric in metrics:\n",
    "                key = \"{}-{}-{:02d}\".format(metric, depth, sequence_id)\n",
    "                agg_key = \"{}-{}\".format(metric, depth)\n",
    "                if not agg_key in res_acc_agg:\n",
    "                    res_acc_agg[agg_key] = []\n",
    "                    res_completeness_agg[agg_key] = []\n",
    "                \n",
    "                acc_perc, completeness = compute_metrics(df, metric)\n",
    "                res[key] = acc_perc\n",
    "                res_completeness[key] = completeness\n",
    "                res_acc_agg[agg_key] = res_acc_agg[agg_key] + acc_perc.tolist()\n",
    "                res_completeness_agg[agg_key] = res_completeness_agg[agg_key] + completeness.tolist()\n",
    "                \n",
    "                box_colors.append(colors[depth][metric])\n",
    "                \n",
    "                columns.append(key)\n",
    "                box_positions.append(box_offset)\n",
    "                box_offset += INNER_GAP\n",
    "            \n",
    "        box_offset += SEQUENCE_GAP\n",
    "        \n",
    "    return res, res_completeness, res_acc_agg, res_completeness_agg, box_offset, box_colors, box_positions, columns\n",
    "\n",
    "\n",
    "def setup_agg_plot(ax, boxplot, fill=False):\n",
    "        # Aesthetic crap\n",
    "        ax.set_ylim([0.4, 1.01])\n",
    "#         plt.minorticks_()\n",
    "        ax.yaxis.set_minor_locator(AutoMinorLocator(4))\n",
    "        plt.xticks(rotation=45, ha='right')\n",
    "        colors = ['C0', 'C1', 'C2', 'C3']\n",
    "\n",
    "        for i, patch in enumerate(boxplot['medians']):\n",
    "            if fill:\n",
    "                patch.set_color('black')\n",
    "            else:\n",
    "                patch.set_color(colors[i])\n",
    "        for i, patch in enumerate(boxplot['boxes']):\n",
    "            if fill:\n",
    "                patch.set_color('black')\n",
    "                patch.set_facecolor(colors[i])\n",
    "            else:\n",
    "                patch.set_color(colors[i])\n",
    "                \n",
    "        for i, patch in enumerate(boxplot['whiskers']):\n",
    "            if fill:\n",
    "                patch.set_color('black')\n",
    "            else:\n",
    "                patch.set_color(colors[i//2])\n",
    "        for i, patch in enumerate(boxplot['caps']):\n",
    "            if fill:\n",
    "                patch.set_color('black')\n",
    "            else:\n",
    "                patch.set_color(colors[i//2])\n",
    "\n",
    "        ax.set_xticklabels([\"ELAS input\", \"ELAS fused\", \"DispNet input\", \"DispNet fused\"])\n",
    "        ax.grid('off')\n",
    "        ax.yaxis.grid(True, linestyle='-', which='major', color='gray', alpha=0.75)\n",
    "        ax.yaxis.grid(True, linestyle='-', which='minor', color='lightgrey', alpha=0.75)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Data read & aggregated OK.\n",
      "Agg meta-stats:\n",
      "input-elas 22788\n",
      "input-dispnet 22788\n",
      "fusion-dispnet 22788\n",
      "fusion-elas 22788\n",
      "Textual results: \n",
      "input-elas : 0.9101852172474811\n",
      "fusion-elas : 0.9156700929357738\n",
      "input-dispnet : 0.8947140885497985\n",
      "fusion-dispnet : 0.8898074020656355\n",
      "Saved figure to [odo-acc-agg-static-depth-result].    \n",
      "Textual results: \n",
      "input-elas : 0.7941609872954063\n",
      "fusion-elas : 0.9378335076194251\n",
      "input-dispnet : 0.989920269352067\n",
      "fusion-dispnet : 0.9780469902068254\n",
      "Saved figure to [odo-completeness-agg-static-depth-result].    \n",
      "Data read & aggregated OK.\n",
      "Agg meta-stats:\n",
      "input-elas 12074\n",
      "input-dispnet 12074\n",
      "fusion-dispnet 12074\n",
      "fusion-elas 12074\n",
      "Textual results: \n",
      "input-elas : 0.8414992272906736\n",
      "fusion-elas : 0.8157548800911882\n",
      "input-dispnet : 0.8621201951441085\n",
      "fusion-dispnet : 0.8290028455484645\n",
      "Saved figure to [odo-acc-agg-dynamic-depth-result].    \n",
      "Textual results: \n",
      "input-elas : 0.8650405140215749\n",
      "fusion-elas : 0.9470498466719215\n",
      "input-dispnet : 0.9890199622179487\n",
      "fusion-dispnet : 0.9785901962971102\n",
      "Saved figure to [odo-completeness-agg-dynamic-depth-result].    \n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f5a5a030e48>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f5a5ab86828>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f5a5a4762e8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f5a637b9ac8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "def gen_plots(root, part, out_dir, **kw):\n",
    "    file_pattern = 'k-99999-kitti-odometry-{sequence_id:02d}-offset-0-depth-precomputed-{depth}-' \\\n",
    "                   'voxelsize-0.0500-max-depth-m-20.00-dynamic-mode-NO-direct-ref-' \\\n",
    "                   'with-fusion-weights-{part}.csv'\n",
    "    base = os.path.join(root, file_pattern)\n",
    "    save_to_disk = kw.get('save_to_disk', True)\n",
    "    \n",
    "    # Controls which plots are produced\n",
    "    plot_agg = True\n",
    "    plot_separate = False\n",
    "        \n",
    "    colors = {\n",
    "        'elas': {\n",
    "            'input': 'C0',\n",
    "            'fusion': 'C1',\n",
    "        },\n",
    "        'dispnet': {\n",
    "            'input': 'C2',\n",
    "            'fusion': 'C3'\n",
    "        }\n",
    "    }\n",
    "    \n",
    "    def setup_xaxis_legend(ax, **kw):\n",
    "        bp_np = np.array(box_positions)\n",
    "        alt_ticks = bp_np[np.arange(len(bp_np)) % GROUP_SIZE == 0] + (INNER_GAP*(GROUP_SIZE-1.0)/2.0)\n",
    "        ax.set_xticks(alt_ticks)\n",
    "        ax.set_xticklabels(\"{:02d}\".format(sid) for sid in sequences)\n",
    "        ax.set_xlabel(\"Sequence\")\n",
    "\n",
    "        ax.set_ylim([0.0, 1.0])\n",
    "\n",
    "        for patch, color in zip(boxplot['medians'], box_colors):\n",
    "            patch.set_color(color)    \n",
    "\n",
    "        for patch, color in zip(boxplot['boxes'], box_colors):\n",
    "            patch.set_color(color)\n",
    "\n",
    "        # Ugly, but required since every box has two whiskers and two caps...\n",
    "        for idx, (whisker, cap) in enumerate(zip(boxplot['whiskers'], boxplot['caps'])):\n",
    "            cap.set_color(box_colors[idx%(2*GROUP_SIZE) // 2])\n",
    "            whisker.set_color(box_colors[idx%(2*GROUP_SIZE) // 2])   \n",
    "\n",
    "        # Dummies for showing the appropriate legend\n",
    "        ax.plot([0.0], [-1000], label=\"ELAS input\", color=colors['elas']['input'])\n",
    "        ax.plot([0.0], [-1000], label=\"ELAS fused\", color=colors['elas']['fusion'])\n",
    "        ax.plot([0.0], [-1000], label=\"DispNet input\", color=colors['dispnet']['input'])\n",
    "        ax.plot([0.0], [-1000], label=\"DispNet fused\", color=colors['dispnet']['fusion'])\n",
    "        ax.legend(loc=kw.get('legendloc', 'lower left'))\n",
    "\n",
    "        ax.grid('off')\n",
    "        ax.yaxis.grid(True, linestyle='-', which='major', color='lightgrey', alpha=0.75)\n",
    "        \n",
    "    def save_fig(f, fname):\n",
    "        print(\"Saving figure to [{}]... \".format(fname), end='')\n",
    "        if not os.path.exists(out_dir):\n",
    "            os.makedirs(out_dir)\n",
    "        f.savefig(os.path.join(out_dir, fname + '.png'), bbox_inches='tight')\n",
    "        f.savefig(os.path.join(out_dir, fname + '.eps'), bbox_inches='tight')\n",
    "        print(\"\\rSaved figure to [{}].    \".format(fname))\n",
    "    \n",
    "    res, res_completeness, res_acc_agg, res_completeness_agg, box_offset, box_colors, box_positions, columns = \\\n",
    "        load_and_preprocess(base, part, colors)\n",
    "                \n",
    "#     res_acc_all = [entry for (key, sublist) in res.items() for entry in sublist]\n",
    "        \n",
    "    print(\"Data read & aggregated OK.\")\n",
    "    print(\"Agg meta-stats:\")\n",
    "    for k, v in res_acc_agg.items():\n",
    "        print(k, len(v))\n",
    "        \n",
    "    agg_props = {'linewidth': 2}\n",
    "    \n",
    "    ################################################################################\n",
    "    # Accuracy plots\n",
    "    ################################################################################\n",
    "    if plot_separate:\n",
    "        res_df = pd.DataFrame(res)    \n",
    "        FIG_SIZE = (16, 6)\n",
    "        fig = plt.figure(figsize=FIG_SIZE)\n",
    "        ax = fig.add_subplot(1, 1, 1)\n",
    "        (ax, boxplot) = res_df.boxplot(columns, showfliers=False, \n",
    "                                       return_type='both',\n",
    "                                       widths=0.50, \n",
    "                                       ax=ax, \n",
    "    #                                    patch_artist=True,  # Enable fill\n",
    "                                       positions=box_positions)\n",
    "        setup_xaxis_legend(ax)\n",
    "        ax.set_ylabel(\"Accuracy\", labelpad=15)\n",
    "        ax.set_ylim([0.3, 1.01])\n",
    "        if save_to_disk:\n",
    "            save_fig(fig, 'odo-acc-{}'.format(part))\n",
    "    \n",
    "    ################################################################################\n",
    "    # Aggregate accuracy plots\n",
    "    ################################################################################\n",
    "    if plot_agg:\n",
    "        res_acc_agg_df = pd.DataFrame(res_acc_agg)\n",
    "        fig = plt.figure(figsize=(4,6))\n",
    "        ax = fig.add_subplot(1, 1, 1)\n",
    "        agg_cols = ['input-elas', 'fusion-elas', 'input-dispnet', 'fusion-dispnet']\n",
    "        (ax, boxplot) = res_acc_agg_df.boxplot(agg_cols, showfliers=False,\n",
    "                                               return_type='both',\n",
    "                                               widths=0.50,\n",
    "                                               ax=ax,\n",
    "                                               boxprops=agg_props,\n",
    "                                               whiskerprops=agg_props,\n",
    "                                               capprops=agg_props,\n",
    "                                               medianprops=agg_props)\n",
    "    #                                            patch_artist=True)\n",
    "        ax.set_ylabel(\"Accuracy\", labelpad=15)\n",
    "        setup_agg_plot(ax, boxplot)\n",
    "\n",
    "        print(\"Textual results: \")\n",
    "        for col in agg_cols:\n",
    "            print(col, \":\", res_acc_agg_df[col].mean())\n",
    "\n",
    "        if save_to_disk:\n",
    "            save_fig(fig, 'odo-acc-agg-{}'.format(part))\n",
    "    \n",
    "    ################################################################################\n",
    "    # Completeness plots\n",
    "    ################################################################################\n",
    "    if plot_separate:\n",
    "        res_completeness_df = pd.DataFrame(res_completeness)\n",
    "        fig = plt.figure(figsize=FIG_SIZE)\n",
    "        ax = fig.add_subplot(1, 1, 1)\n",
    "\n",
    "        (ax, boxplot) = res_completeness_df.boxplot(columns, showfliers=False, \n",
    "                                                   return_type='both',\n",
    "                                                   widths=0.50, \n",
    "                                                   ax=ax, \n",
    "                #                                    patch_artist=True,  # Enable fill\n",
    "                                                   positions=box_positions)\n",
    "\n",
    "        setup_xaxis_legend(ax)\n",
    "        ax.set_ylim([0.3, 1.01])\n",
    "        ax.set_ylabel(\"Completeness\")\n",
    "\n",
    "        if save_to_disk:\n",
    "            save_fig(fig, 'odo-completeness-{}'.format(part))\n",
    "        \n",
    "    ################################################################################\n",
    "    # Aggregate completeness plots\n",
    "    ################################################################################\n",
    "    if plot_agg:\n",
    "        res_completeness_agg_df = pd.DataFrame(res_completeness_agg)\n",
    "        fig = plt.figure(figsize=(4,6))\n",
    "        ax = fig.add_subplot(1, 1, 1)\n",
    "        agg_cols = ['input-elas', 'fusion-elas', 'input-dispnet', 'fusion-dispnet']\n",
    "        (ax, boxplot) = res_completeness_agg_df.boxplot(agg_cols, showfliers=False,\n",
    "                                                        return_type='both',\n",
    "                                                        widths=0.50,\n",
    "                                                        ax=ax,\n",
    "                                                        boxprops=agg_props,\n",
    "                                                        whiskerprops=agg_props,\n",
    "                                                        capprops=agg_props,\n",
    "                                                        medianprops=agg_props)\n",
    "        ax.set_ylabel(\"Completeness\", labelpad=15)\n",
    "        setup_agg_plot(ax, boxplot)\n",
    "\n",
    "        print(\"Textual results: \")\n",
    "        for col in agg_cols:\n",
    "            print(col, \":\", res_completeness_agg_df[col].mean())\n",
    "\n",
    "        if save_to_disk:\n",
    "            save_fig(fig, 'odo-completeness-agg-{}'.format(part))\n",
    "    \n",
    "save = True\n",
    "out_dir = '../fig'\n",
    "gen_plots('../csv/odo-res', 'static-depth-result', out_dir, save_to_disk=save)\n",
    "gen_plots('../csv/odo-res', 'dynamic-depth-result', out_dir, save_to_disk=save)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.5.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
